package cn.tedu.list;

/**
 * Date：2021年11月
 * Author：程Sir
 * Name： JavaSE-API
 * Content:
 *        可变参数：
 *          是jdk1.5之后的特性！
 *         (1)要求：当方法的参数列表中数据类型已经确定，但是参数的个数未知，那么就优先考虑可变参数
 *         （2）格式：
 *                 修饰符 返回值类型 方法名(数据类型... a){ }
 *         （3）原理：
 *               可变参数的底层本质就是一个数组，根据传递的参数个数不同，会创建的不同长度的数组
 *               注意，与数组不同的是，可变参数传递的个数可以是0个，或者多个。
 *                   如果数组作为参数，是一定要传递参数的，最少得传递一个null。
 */
public class VarargsDemo {
    public static void main(String[] args) {
        int num = sum(10,20);
        System.out.println(num);
        num = sum(10,20,30);
        System.out.println(num);
        num = sum(10,20,30,40);
        System.out.println(num);
    }
    /*
        可变参数的使用注意事项：
            1. 在参数列表中，如果有多个数据类型存在，可变参数必须在参数列表的最后一个
            2. 在参数列表中，可变参数只能有一个
     */

    /*public static int method( String str, double d,int...a,String...c){ // 编译报错

    }*/


    public static int sum(int... a){
        // 定义一个变量。用来存储和
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        return sum ;
    }


//    public static int sum(int a,int b){
//        return  a+b;
//    }
//
//    public static int sum(int a,int b,int c){
//        return  a+b+c;
//    }
//
//    public static int sum(int a,int b,int c,int d){
//        return  a+b+c+d;
//    }



}
